#include <windows.h>
#pragma hdrstop

#include "oziapi.h"

#if !defined(USE_OZI_IMP)
HMODULE oziApiDll;

ToziCloseApi oziCloseApi;
ToziGetExePath oziGetExePath;

ToziCenterMapAtPosition oziCenterMapAtPosition;
ToziCenterMapAtPositionWithMark oziCenterMapAtPositionWithMark;
ToziCloseProgram oziCloseProgram;
ToziFindOzi oziFindOzi;
ToziStopMM  oziStopMM;
ToziStartMMserial oziStartMMserial;
ToziGetMapDatum oziGetMapDatum;
ToziStartMMapi oziStartMMapi;
ToziConvertLL2Grid oziConvertLL2Grid;

ToziConvertDatum oziConvertDatum;

ToziClearWPs oziClearWPs;
ToziClearEVs oziClearEVs;
ToziClearRTEs oziClearRTEs;
ToziClearTRKs oziClearTRKs;
ToziClearTRK oziClearTRK;
ToziClearPTs oziClearPTs;
ToziClearMFs oziClearMFs;
ToziClearMCs oziClearMCs;

ToziCreateWP oziCreateWP;
ToziCreateMF oziCreateMF;
ToziCreateMC oziCreateMC;

ToziMapSingleClickON oziMapSingleClickON;
ToziMapSingleClickOFF oziMapSingleClickOFF ;
ToziMapDblClickON oziMapDblClickON;
ToziMapDblClickOFF oziMapDblClickOFF;
ToziObjectClickON oziObjectClickON;
ToziObjectClickOFF oziObjectClickOFF;

ToziLoadMap oziLoadMap;
ToziSaveMap oziSaveMap;

ToziLoadWPfile oziLoadWPfile;
ToziLoadTRKfile oziLoadTRKfile;

ToziChangeTRKcolor oziChangeTRKcolor;


//these are for multi tracking
ToziMTStartMultiTrack oziMTStartMultiTrack;
ToziMTStopMultiTrack oziMTStopMultiTrack;
ToziMTSendPosition oziMTSendPosition;
ToziMTloadIDsON oziMTloadIDsON;
ToziMTloadIDsOFF oziMTloadIDsOFF;

//MM
ToziSendMMpositionON oziSendMMpositionON;
ToziSendMMpositionOFF oziSendMMpositionOFF;

////////////////////////////////////////////
// call this function to load the oziAPI.dll
// and set up the function calls
////////////////////////////////////////////

BOOL LoadOziApiDll(void)
  {
     oziApiDll = LoadLibrary("oziapi.dll");
     if ( !oziApiDll ) return FALSE;

#define GPROC( n )   n = (T##n)GetProcAddress( oziApiDll,#n ); if (!n) break;

     do{
       GPROC( oziCloseApi );
       GPROC( oziGetExePath );
       GPROC( oziCenterMapAtPosition );
       GPROC( oziCenterMapAtPositionWithMark );
       GPROC( oziCloseProgram );
       GPROC( oziFindOzi );
       GPROC( oziStopMM );
       GPROC( oziStartMMserial );
       GPROC( oziGetMapDatum );
       GPROC( oziConvertDatum );
       GPROC( oziClearWPs );
       GPROC( oziClearEVs );
       GPROC( oziClearRTEs );
       GPROC( oziClearTRKs );
       GPROC( oziClearTRK );
       GPROC( oziClearPTs );
       GPROC( oziClearMFs );
       GPROC( oziClearMCs );
       GPROC( oziCreateWP );
       GPROC( oziCreateMF );
       GPROC( oziCreateMC );
       GPROC( oziMapSingleClickON );
       GPROC( oziMapSingleClickOFF );
       GPROC( oziMapDblClickON );
       GPROC( oziMapDblClickOFF );
       GPROC( oziObjectClickON );
       GPROC( oziObjectClickOFF );
       GPROC( oziLoadMap );
       GPROC( oziSaveMap );
       GPROC( oziLoadWPfile );
       GPROC( oziLoadTRKfile );
       GPROC( oziChangeTRKcolor );
       GPROC( oziMTStartMultiTrack );
       GPROC( oziMTStopMultiTrack );
       GPROC( oziMTSendPosition );
       GPROC( oziMTloadIDsON );
       GPROC( oziMTloadIDsOFF );
       GPROC( oziSendMMpositionON );
       GPROC( oziSendMMpositionOFF );
       GPROC( oziStartMMapi );
       GPROC( oziConvertLL2Grid );
       return TRUE;
    }while(0);

    FreeLibrary(oziApiDll);
return FALSE;

}
#endif